package com.cencat.framework.file.service;

import com.cencat.framework.file.dto.FileUploadRequest;
import com.cencat.framework.file.vo.FileInfoVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件存储服务接口
 */
public interface FileStorageService {
    
    /**
     * 上传文件
     */
    FileInfoVO uploadFile(FileUploadRequest request);
    
    /**
     * 批量上传文件
     */
    List<FileInfoVO> uploadFiles(List<FileUploadRequest> requests);
    
    /**
     * 下载文件
     */
    byte[] downloadFile(String fileKey);
    
    /**
     * 获取文件预览URL
     */
    String getPreviewUrl(String fileKey);
    
    /**
     * 删除文件
     */
    boolean deleteFile(String fileKey);
    
    /**
     * 批量删除文件
     */
    boolean deleteFiles(List<String> fileKeys);
    
    /**
     * 获取文件信息
     */
    FileInfoVO getFileInfo(String fileKey);
    
    /**
     * 检查文件是否存在
     */
    boolean fileExists(String fileKey);
    
    /**
     * 复制文件
     */
    FileInfoVO copyFile(String sourceFileKey, String targetPath);
    
    /**
     * 移动文件
     */
    FileInfoVO moveFile(String sourceFileKey, String targetPath);
    
    /**
     * 生成文件上传签名
     */
    String generateUploadSignature(String fileName, long fileSize);
    
    /**
     * 清理临时文件
     */
    int cleanupTemporaryFiles();
}